<?php
	/**
	 * Klass REGISTER VIEW - skriver/visar ut allt som användaren ska se.
	 * Innehåller det som ska skrivas ut och visas för användaren. Väntar på konversationer ifrån controllern.
	 */ 
	class RegisterView {

		private $customernameKey = "customername";
		private $onrKey = "onr";
		private $customertypeKey = "customertype";
		private $adressKey = "adress";
		private $postalcodeKey = "postalcode";
		private $cityKey = "city";
		private $phoneKey = "phone";
		private $mailKey = "mail";
		private $usernameKey = "username";
		private $passwordKey = "password";
		private $repeatPasswordKey = "repeatPassword";
		private $registerKey = "register";

		const EMPTY_MESSAGE = 0;

		const EMPTY_CUSTOMERNAME = 1;
		const EMPTY_ORGANISATIONID = 2;
		const EMPTY_ADRESS = 3;
		const EMPTY_POSTALCODE = 4;
		const EMPTY_CITY = 5;
		const EMPTY_PHONE = 6;
		const EMPTY_MAIL = 7;
		const EMPTY_USERNAME = 8;
		const EMPTY_PASSWORD = 9;
		const EMPTY_REPEAT_PASSWORD = 10;

		const WRONG_FORMAT_CUSTOMERNAME = 11;
		const WRONG_FORMAT_ORGANISATIONID = 12;
		const WRONG_FORMAT_POSTALCODE = 13;
		const WRONG_FORMAT_PHONE = 14;
		const WRONG_FORMAT_MAIL = 15;
		const WRONG_FORMAT_USERNAME = 16;
		const WRONG_FORMAT_PASSWORD = 17;
		const WRONG_FORMAT_REPEAT_PASSWORD = 18;
		
		const SHORT_USERNAME = 19;
		const SHORT_PASSWORD = 20;		
		
		const USERNAME_TAKEN = 21;

		const REGISTRATION_IS_SUCCESSFUL = 22;
		

		//----- FUNKTION: MESSAGE HOLDER -----------------------------------------------------------------------------------------------------------------------------------	
		/**
		* Funktion för att hantera meddelanderna. 
		* @param array $messages Innehåller information om vilka meddelanden som ska skrivas ut.
		* @return string $message Meddelandet/na.
		*/
		public function MessageHolder($messages) {
			$message = "";

			if (count($messages) > 0) {
				$message = "<div class='alert alert-error'>";
				$message .= "<h4 class='alert-heading'>Fel</h4>";
			}

			for ($messagePosition=0; $messagePosition < count($messages); $messagePosition++) { 
				switch ($messages[$messagePosition]) {
					case self::EMPTY_MESSAGE:
						$message .= "";					
						break;
						
					case self::EMPTY_CUSTOMERNAME:
						$message .= "<p class='message'>Fyll i ett kundnamn!</p>";					
						break;
					
					case self::EMPTY_ORGANISATIONID:
						$message .= "<p class='message'>Fyll i ett organisations id!</p>";					
						break;
						
					case self::EMPTY_ADRESS:
						$message .= "<p class='message'>Fyll i en adress!</p>";					
						break;
						
					case self::EMPTY_POSTALCODE:
						$message .= "<p class='message'>Fyll i ett postnummer!</p>";					
						break;

					case self::EMPTY_CITY:
						$message .= "<p class='message'>Fyll i en stad!</p>";					
						break;	

					case self::EMPTY_PHONE:
						$message .= "<p class='message'>Fyll i ett telefonnummer!</p>";					
						break;

					case self::EMPTY_MAIL:
						$message .= "<p class='message'>Fyll i en mail!</p>";					
						break;

					case self::EMPTY_USERNAME:
						$message .= "<p class='message'>Fyll i ett användarnamn!</p>";					
						break;
					
					case self::EMPTY_PASSWORD:
						$message .= "<p class='message'>Fyll i ett lösenord!</p>";					
						break;

					case self::EMPTY_REPEAT_PASSWORD:
						$message .= "<p class='message'>Repetera lösenordet!</p>";					
						break;

					case self::WRONG_FORMAT_CUSTOMERNAME:
						$message .= "<p class='message'>Fel format på kundnamnet. Endast bokstäver!</p>";					
						break;
					
					case self::WRONG_FORMAT_ORGANISATIONID:
						$message .= "<p class='message'>Fel format på organisationsnummret. xxxxxx-xxxx</p>";					
						break;

					case self::WRONG_FORMAT_POSTALCODE:
						$message .= "<p class='message'>Fel format på postnummret. xxx xx</p>";					
						break;

					case self::WRONG_FORMAT_PHONE:
						$message .= "<p class='message'>Fel format på telefonnummret. Endast siffror!</p>";					
						break;

					case self::WRONG_FORMAT_MAIL:
						$message .= "<p class='message'>Fel format på mailen. example@exampel.se</p>";					
						break;

					case self::WRONG_FORMAT_USERNAME:
						$message .= "<p class='message'>Fel format på användarnamnet. Endast bokstäver!</p>";					
						break;
						
					case self::WRONG_FORMAT_PASSWORD:
						$message .= "<p class='message'>Fel format på lösenordet. Endast tillåtna tecken!</p>";					
						break;
						
					case self::WRONG_FORMAT_REPEAT_PASSWORD:
						$message .= "<p class='message'>Fel format på rep.lösenordet. Endast tillåtna tecken!</p>";					
						break;
						
					case self::SHORT_USERNAME:
						$message .= "<p class='message'>För kort användarnamn! Minst 5 tecken.</p>";					
						break;													
					
					case self::SHORT_PASSWORD:
						$message .= "<p class='message'>För kort lösenord. Minst 6 tecken.</p>";					
						break;
						
					case self::USERNAME_TAKEN:
						$message .= "<p class='message'>Användarnamnet är upptaget..</p>";					
						break;
					
					case self::REGISTRATION_IS_SUCCESSFUL:
						$message = "<div class='alert alert-success'>";
						$message .= "<h4 class='alert-heading'>Rätt</h4>";
						$message .= "<p class='right_message '>Registreringen lyckades!</p>";					
						break;

					default:					
						break;
				}
			}

			if (count($messages) > 0) {
				$message .= "</div>";
			}
			return $message;			
		}


		//----- FUNKTION: CREATE REGISTER FORM -----------------------------------------------------------------------------------------------------------------------------
		/**
		* Funktion för att skapa registrerings formuläret för en ny kund. 
		* @param string $messagesHTML Innehåller meddelandena.
		* @return string Formuläret som skrivs ut i HTML-kod.
		*/
		public function CreateRegisterForm($messagesHTML) {
			 
			// Variabler som innehåller den informationen som användaren har skrivit in. Ifall något går fel så finns infon kvar i fälten.
			$prev_customername = $this->GetCustomerName();		 		 
			$prev_onr = $this->GetOnr();
			$prev_customerType = $this->GetCustomertype();
			$prev_adress = $this->GetAdress();
			$prev_postalcode = $this->GetPostalcode();
			$prev_city = $this->GetCity();
			$prev_phone = $this->GetPhone();
			$prev_mail = $this->GetMail();
			$prev_customername = $this->GetCustomerName();
			$prev_username = $this->GetUsername();

			$options = "<option value='1'>Företag</option>
		 				<option value='2'>Privat</option>";
		 				
			if ($prev_customerType == 1) {
				$options = "<option value='1' selected>Företag</option>
			 				<option value='2'>Privat</option>";
			}

			else if ($prev_customerType == 2) {
				$options = "<option value='1'>Företag</option>
			 				<option value='2' selected>Privat</option>";
			}

			return "			 
			$messagesHTML
			 	<div id='registerContainerBox'>	 				
	 				
	 				<form id='registerForm' method='POST'>			 			
 						<legend>Lägg till en ny kund</legend>

				 			<div id='user'>
				 				<lable for='$this->customernameKey'>Kundnamn: </lable>
					 			<input name='$this->customernameKey' type='text' id='$this->customernameKey' class='orig' value='$prev_customername'>
				 			</div>

				 			<div id='user'>
				 				<lable for='$this->onrKey'>Organisationsnr: </lable>
					 			<input name='$this->onrKey' type='text' id='$this->onrKey' class='orig' value='$prev_onr'>
				 			</div>

				 			<div id='user'>
				 				<lable for='$this->customertypeKey'>Kundtyp: </lable>
					 			<select name='$this->customertypeKey'>
					 				$options
					 			</select>
				 			</div>
				 			<br/>
				 			<h3>Kontaktuppgifter:</h3>
				 			<div id='user'>
				 				<lable for='$this->adressKey'>Adress: </lable>					 			
					 			<input name='$this->adressKey' type='text' id='$this->adressKey' class='orig' value='$prev_adress'>
					 			<lable for='$this->postalcodeKey'>Postnummer: </lable>
					 			<input name='$this->postalcodeKey' type='text' id='$this->postalcodeKey' class='orig' value='$prev_postalcode'>
					 			<lable for='$this->cityKey'>Ort: </lable>
					 			<input name='$this->cityKey' type='text' id='$this->cityKey' class='orig' value='$prev_city'> 
				 			</div>

				 			<div id='pass'>
				 				<lable for='$this->phoneKey'>Telefonnr: </lable>					 			
				 				<input name='$this->phoneKey' type='text' id='$this->phoneKey' class='orig' value='$prev_phone'>				 			
			 				</div>

				 			<div id='pass'>
				 				<lable for='$this->mailKey'>E-post: </lable>					 			
				 				<input name='$this->mailKey' type='text' id='$this->mailKey' class='orig' value='$prev_mail'>				 			
			 				</div>									
			 				<br/>
				 			<h3>Användaruppgifter:</h3>
			 				<div id='user'>
				 				<lable for='$this->usernameKey'>Anv&auml;ndarnamn: </lable>
					 			<input name='$this->usernameKey' type='text' id='$this->usernameKey' class='orig' value='$prev_username'>
				 			</div>		 			

				 			<div id='Rpass'>
				 				<lable for='$this->passwordKey'>L&ouml;senord: </lable>					 			
				 				<input name='$this->passwordKey' type='password' id='$this->passwordKey' class='orig'>				 			
			 				</div>

			 				<div id='Rpass'>
				 				<lable for='$this->repeatPasswordKey'>Upprepa l&ouml;senord: </lable>					 			
				 				<input name='$this->repeatPasswordKey' type='Password' id='$this->repeatPasswordKey' class='orig'>				 			
			 				</div>
	 				
				 			<div id='registerButton'>
				 				<input id='$this->registerKey' name='$this->registerKey' type='submit' value='Lägg till' class='btn btn-warning btn-block'>
			 				</div>
	 				</form>
	 			</div>
			 ";
		}


		//----- FUNKTION: LIST ALL USERES ----------------------------------------------------------------------------------------------------------------------------------
		/**
		* Funktion för att lista alla registrerade användare. 
		* @param array $users En array med users-objekt. (Så vi kan loopa igenom arrayen för att skriva ut en användare i sänder.)
		* @return string $returnstring En lista med alla användare i HTML-kod.
		*/
		public function ListAllUsers($users)
		{
			$returnstring = "
				<div id='ListAllUsersContainerBox'>
					<h2>Alla användare</h2>";

			for ($usersPosition=0; $usersPosition < count($users); $usersPosition++) { 
				$userID = $users[$usersPosition]->userID;
				$username = $users[$usersPosition]->userName;
				$mail = $users[$usersPosition]->userMail;

				 $returnstring .= "
	                <form class='center_row' method='POST' action='index.php'>
                        <span class='short'>$userID</span>
                        <input id='$this->deleteUserIDKey' name='$this->deleteUserIDKey' type='hidden' value='$userID' />
                        <span class='long'>$username</span>
                        <span class='long'>$mail</span>
                        
                        <input type='submit' name='$this->deleteKey' value='Ta Bort' class='delete_button' />                        
	                </form>";
			}
			$returnstring .= "</div>";
			return $returnstring;
		}


		//----- FUNKTION: TRIED TO REGISTER --------------------------------------------------------------------------------------------------------------------------------
		/**
		* Funktion för att kontrollera om en admin har försökt att registrera en ny kund.
		* @return bool
		*/
		public function TriedToRegister()
		{
			if(isset($_POST[$this->registerKey])){
				return true;
			} else{
				return false;
			}
		}


		//----- FUNKTION: GET CUSTOMER NAME --------------------------------------------------------------------------------------------------------------------------------
		/**
		* Funktion för att hämta ut kund namnet.
		* @return string/bool Retunerar kundens namn. Annars retuneras false.
		*/
		public function GetCustomerName()
		{
			if(isset($_POST[$this->customernameKey])){
				return $_POST[$this->customernameKey];
			} else{
				return false;
			}
		}


		//----- FUNKTION: GET ONR ------------------------------------------------------------------------------------------------------------------------------------------
		/**
		* Funktion för att hämta ut organisationsnummret.
		* @return string/bool Retunerar organisationsnummret. Annars retuneras false.
		*/
		public function GetOnr()
		{
			if(isset($_POST[$this->onrKey])){
				return $_POST[$this->onrKey];
			} else{
				return false;
			}
		}


		//----- FUNKTION: GET CUSTOMERTYPE ---------------------------------------------------------------------------------------------------------------------------------
		/**
		* Funktion för att hämta ut kundtypen.
		* @return string/bool Retunerar kundtypen. Annars retuneras false.
		*/
		public function GetCustomertype()
		{
			if(isset($_POST[$this->customertypeKey])){
				return intval($_POST[$this->customertypeKey]);
			} else{
				return false;
			}
		}


		//----- FUNKTION: GET ADRESS ---------------------------------------------------------------------------------------------------------------------------------------
		/**
		* Funktion för att hämta ut adressen.
		* @return string/bool Retunerar adressen. Annars retuneras false.
		*/
		public function GetAdress()
		{
			if(isset($_POST[$this->adressKey])){
				return $_POST[$this->adressKey];
			} else{
				return false;
			}
		}


		//----- FUNKTION: GET POSTLCODE ------------------------------------------------------------------------------------------------------------------------------------
		/**
		* Funktion för att hämta ut postnummret.
		* @return string/bool Retunerar postnummret. Annars retuneras false.
		*/
		public function GetPostalcode()
		{
			if(isset($_POST[$this->postalcodeKey])){
				return $_POST[$this->postalcodeKey];
			} else{
				return false;
			}
		}


		//----- FUNKTION: GET CITY -----------------------------------------------------------------------------------------------------------------------------------------
		/**
		* Funktion för att hämta ut staden.
		* @return string/bool Retunerar staden. Annars retuneras false.
		*/
		public function GetCity()
		{
			if(isset($_POST[$this->cityKey])){
				return $_POST[$this->cityKey];
			} else{
				return false;
			}
		}


		//----- FUNKTION: GET PHONE ----------------------------------------------------------------------------------------------------------------------------------------
		/**
		* Funktion för att hämta ut telefonnummret.
		* @return string/bool Retunerar telefonnummret. Annars retuneras false.
		*/
		public function GetPhone()
		{
			if(isset($_POST[$this->phoneKey])){
				return $_POST[$this->phoneKey];
			} else{
				return false;
			}
		}


		//----- FUNKTION: GET MAIL -----------------------------------------------------------------------------------------------------------------------------------------
		/**
		* Funktion för att hämta ut mailen.
		* @return string/bool Retunerar mailen. Annars retuneras false.
		*/
		public function GetMail()
		{
			if(isset($_POST[$this->mailKey])){
				return $_POST[$this->mailKey];
			} else{
				return false;
			}
		}


		//----- FUNKTION: GET USERNAME -------------------------------------------------------------------------------------------------------------------------------------
		/**
		* Funktion för att hämta ut användarnamnet.
		* @return string/bool Retunerar det användarnamnet. Annars retuneras false.
		*/
		public function GetUsername()
		{
			if(isset($_POST[$this->usernameKey])){
				return $_POST[$this->usernameKey];
			} else{
				return false;
			}
		}


		//----- FUNKTION: GET PASSWORD -------------------------------------------------------------------------------------------------------------------------------------
		/**
		* Funktion för att hämta ut det lösenord som användaren som försöker registrera sig har angett. 
		* @return string/bool Retunerar lösenordet. Annars retuneras false.
		*/
		public function GetPassword()
		{
			if(isset($_POST[$this->passwordKey])){
				return $_POST[$this->passwordKey];
			} else{
				return false;
			}
		}


		//----- FUNKTION: GET REPEAT PASSWORD ------------------------------------------------------------------------------------------------------------------------------
		/**
		* Funktion för att hämta ut det upprepa lösenordet.
		* @return string/bool Retunerar upprepade lösenordet. Annars retuneras false.
		*/
		public function GetRepeatPassword()
		{
			if(isset($_POST[$this->repeatPasswordKey])){
				return $_POST[$this->repeatPasswordKey];
			} else{
				return false;
			}
		}					
	}
?>